#pragma once

#if 0
//静态顺序表
struct SeqList
{
    int array[MAXSIZE];
    int size;  // 顺序表中有效元素的个数
};
#endif


typedef int DataType;

// 动态类型的顺序表
typedef struct SeqList
{
    DataType* array;
    int capacity;    // 表示array指向的空间总的大小
    int size;        // 表示array中有效元素的个数
}SeqList;   //用typedef将 struct SeqList 重命名为 SeqList 


// typedef struct SeqList  SeqList;

//初始化
void SeqListInit(SeqList* ps, int initCap);

//销毁
void SeqListDestroy(SeqList* ps);

// 向顺序表中尾插data
void SeqListPushBack(SeqList* ps, DataType data);

// 将顺序表中最后一个元素删除掉
void SeqListPopBack(SeqList* ps);

// 在顺序表的pos位置插入元素data
void SeqListInsert(SeqList* ps, int pos, DataType data);

//将顺序表中pos位置的元素删除
void SeqListErase(SeqList* ps, int pos);

// 获取有效元素的个数
int SeqListSize(SeqList* ps);

// 获取顺序表的总容量--底层空间总的大小
int SeqListCapacity(SeqList* ps);

// 检测顺序表是否为空
int SeqListEmpty(SeqList* ps);

//查找
int SeqListFind(SeqList* ps, DataType data);

// 将顺序表中的容量扩增到Capacity
void SeqListReserve(SeqList* ps, int Capacity);

/////////////////////测试方法//////////////////////////////////
void SeqListPrint(SeqList* ps);
